home *** CD-ROM | disk | FTP | other *** search
- '
- 'Class description:
- '
- !short:Task class structure:
- Class Task:
- ~~~~~~~~~~~~
- This class is base for all objects, which seem to be indenpendent runing
- tasks. The complete task switching is enabled with object manipulation.
- The special menu for active window control is offered. The tasks can be
- switched, the window assigned to each task is movable, sizeable and can
- be iconised.
-
- Common use:
- ~~~~~~~~~~~
- If you dislike standard class View for input/output manipulation, you can
- as superset to class Task create your own class. If you use a screen
- generator (with this library it needn't), you can reach the output source
- code of this generator to behave as class View. To do so you must:
- 1.Create your own class derived from task class.
- 2.Define own virtual methds Init(), VPaint(), Vprocess().
- The method Init should set the window size range.
- The method Vpaint should paint the window contet and end itself.
- Vprocess() is the basic function to do when the window becomes active.
- It should return control when becoming key value nSwapTask(255).
- Or you can simply use class ^UMask^N.
-
- Source code is in C_Task.prg
-
- !seealso: c_window.ngo:Window c_browse.ngo:Browse c_frame.ngo:Frame c_menu.ngo:Menu c_color.ngo:Color ob_class.ngo:"Class hierarchy"
-
- !short:~~~~~~~~~~~~~~~~~~~~~
- !short:create class Task from Window
- !short: export:
- !short: var IsDead //false
- ^BTask:IsDead^N: read-only: logical
- If true, the object was succesfully destroyed. The further object
- manipulation is only allowed to obtain information from its instvar
- variables.
-
- !short: var DoneBlock //{||true}
- ^BTask:DoneBlock^N: public: code_block
- Here can be code block placed to do the window closing connected job.
- (i.g. saving of changed text). If it returns true the object (class)
- can be destroyed, if false it can't be destroyed and the control is
- passed to virtual process of this task from the task swapper.
- When calling the code block Task:DoneBlock is the object
- of instvar variable Doneblock passed as a parameter.
-
- !short: method New=TaskNew //o:New() --> self
- ^BTask:New()^N: public: return self
- Object is filled with default values.
-
- !short: method Init=TaskInit //o:Init(Name,R,C,Rs,Cs,Clr,Shd) --> true
- ^BTask:Init(Name,R,C,Rs,Cs,Clr,Shadow)^N: return true
- Preparing job is done here by initialising the window, adding the new task
- to the stack (for the task swapper), the hot keys are set. The new task
- window remains unvisible after finishing of Task:Init.
-
- Parameter description:
- ~~~~~~~~~~~~~~~~~~~~~~
- ^UName^N: text alebo kodovy blok: default is {||""}, i.e. no title.
- Text or code block as window title.
-
- ^UR^N: numeric: default is 3.
- Upper window border.
-
- ^UC^N: numeric: default is 4.
- Left window border.
-
- ^URs^N: numeric: default is MaxRow()-7.
- Window height in number of rows passed into.
-
- ^UCs^N: numeric: default is MaxCol()-9.
- Window widthin number of columns passed into.
-
- ^UClr^N: character: default is m->Color:Edit.
- Window color.
-
- ^UShadow^N: logical: default is true for color monitor, false for monochrom.
- If true, the shadow will be painted.
-
- !short: method GoodInit=TaskGoodInit //o:GoodInit(Name,R,C,Rs,Cs,CurSize,Clr,Shd) --> true
- ^BTask:GoodInit(Name,R,C,Rs,Cs,CurSize,Clr,Shadow)^N: public: return true
- Preparing job is done here by initialising the window, adding the new task
- to the stack (for the task swapper), the hot keys are set. The new task
- window remains unvisible after finishing of Task:Init. The position of the
- new window is counted by herited method GoodInit() of class Box to be
- nearest possible to the cursor and not to cover any required text.
- The window should be visible whole.
-
- Parameter description:
- ~~~~~~~~~~~~~~~~~~~~~~
- ^UName^N: text or code block: default is {||""}, i.e. no title
- Text or code block as window title.
-
- ^UR^N: numeric: default is Row().
- The row text position the window to be put nearest possible.
-
- ^UC^N: numeric: default is Col().
- The column text position the window to be put nearest possible.
-
- ^URs^N: numeric: default is MaxRow()-7.
- Required window height in number of rows passed into.
-
- ^UCs^N: numeric: default is MaxCol()-9.
- Required window width in number of columns passed into.
-
- ^UCurSize^N: numeric: default is 1.
- Text size that should not be covered but the window should be nearest
- possible.
-
- ^UClr^N: character: default is m->Color:Edit.
- Window colors.
-
- ^UShadow^N: logical: default is true for color monitor, false for monochrom.
- If true,the shadow will be painted.
-
- !short: method Top=TaskTop //o:Top(lRepaint) --> true
- ^BTask:Top(lRepaint)^N: public: return true
- The task is set as active, switched to front and painted in active task
- colors.
-
- Parameter description
- ~~~~~~~~~~~~~~~~~~~~~
- ^UlRePaint^N: logical: default is true
- If lRepaint is true, the screen is erased and all windows are repainted
- from the stack of windows.
-
- !short: method VProcess=TaskVProcess //o:VProcess() --> new_active_task_objekt
- ^BTask:VProcess()^N: public: return new_active_task_objekt
- This virtual method is for active part of the task. In this class it only
- waits for key pressing and the ends. It should be redefined by derived
- classes for doing required job. The return value can be another object
- derived from the task class and it becomes active. This enables the task
- chaining, to estabilish conections between the objects (which enables
- multi-threading). See the instvar variable DoneBlock. This method must be
- finished when receiving the nSwapTask code (255) from the keyboard
- and must be resartable. For task finishing is used method Done().
-
- !short: method Process=TaskProcess //o:Process() --> true
- ^BTask:Process()^N: public: return true
- It is aplication loop which is finished only when the main program menu
- is active. The task switching is controled by task-swapper. For each
- window, which becomes active is the virtual method VProcess() activated.
- The creation of virtual method Process has the sense only for post
- initialisation of objects of user defined class. It is sufficient to
- run VPaint() (window content painting) and VProcess() (the task work).
-
- !short: method Done=TaskDone //o:Done(lRePaint) --> true/false
- ^BTask:Done(lRePaint)^N: return true/false
- The object (task) finishing, only when code block DoneBlock returns true.
- It is not usual to use this method due to user requested task finishing
- by pressing ESC or Ctrl-Enter when the task is active. Then is the task
- finishing activated from Task:Process() method. This method is for task
- finishing by own program code part.
-
- !short: endclass
-
-